package juanca.mole;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Calendar;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;

import ClasesExtras.AdaptadorMpInspeccionada;
import ClasesExtras.GetIpAddress;
import ClasesExtras.MpInspeccionada;
import ClasesExtras.handlerAlertMessage;
import ClasesExtras.handlerDb;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class CtrlManejoFruver extends Activity {

	private String fechaUsuario;
	private String tiempoUsuario;
	private String fechaSistema;
	private String tiempoSistema;
	private int fAno;
	private int fMes;
	private int fDia;
	private int hMinuto;
	private int hHora;
	private int idMpInspect;
	private int cantinadBna;
	private int cantinadMala;
	private int cantinadPepa;
	private int cantinadPulpa;
	private int cantinadBasura;
	private int itemPosition;
	private int tipo;
	private String nombreMpInspect;

	public ProgressDialog progressDialog;
	public String date;
	public String time;
	public String numeroLote;
	public JSONArray jsonArray;
	public handlerDb handlerdb = new handlerDb(this);
	public int sinControlar = 0;
	public int cantMPInspec = 0;

	private TextView tvMpInspecionada;
	private EditText etCantBuena;
	private EditText etCantMala;
	private EditText etCantPepa;
	private EditText etCantPulpa;
	private EditText etCantBasura;
	private ListView lvMpInspec;
	private TextView tvVacio;

	public static final int DATE_DIALOG_ID = 0;
	public static final int TIME_DIALOG_ID = 1;
	private String URL_IMP;
	private String URL_REGISTRO_CTRL_FRUVER;
	private String URL_REGISTRO_CTRL_FRUVER_FORCE;
	public static final String STRING_EMPTY = "";

	private CtrlManejoFruver self = this;
	private ArrayList<MpInspeccionada> Lista_MpInspec;
	private AdaptadorMpInspeccionada adaptador;
	private handlerAlertMessage manejadorMensajes;
	private Activity activity;

	public int getTipo() {
		return tipo;
	}

	public void setTipo(int tipo) {
		this.tipo = tipo;
	}

	/**
	 * @return the idMpInspect
	 */
	public int getIdMpInspect() {
		return idMpInspect;
	}

	/**
	 * @param idMpInspect
	 *            the idMpInspect to set
	 */
	public void setIdMpInspect(int idMpInspect) {
		this.idMpInspect = idMpInspect;
	}

	/**
	 * @return the nombreMpInspect
	 */
	public String getNombreMpInspect() {
		return nombreMpInspect;
	}

	/**
	 * @param nombreMpInspect
	 *            the nombreMpInspect to set
	 */
	public void setNombreMpInspect(String nombreMpInspect) {
		this.nombreMpInspect = nombreMpInspect;
	}

	/**
	 * @return the tiempoUsuario
	 */
	public String getTiempoUsuario() {
		return tiempoUsuario;
	}

	/**
	 * @param tiempoUsuario
	 *            the tiempoUsuario to set
	 */
	public void setTiempoUsuario(String tiempoUsuario) {
		this.tiempoUsuario = tiempoUsuario;
	}

	/**
	 * @return the fechaUsuario
	 */
	public String getFechaUsuario() {
		return fechaUsuario;
	}

	/**
	 * @param date
	 *            the fechaUsuario to set
	 */
	public void setFechaUsuario(String date) {
		this.fechaUsuario = date;
	}

	/**
	 * @return the tiempoSistema
	 */
	public String getTiempoSistema() {
		return tiempoSistema;
	}

	/**
	 * @param tiempoSistema
	 *            the tiempoSistema to set
	 */
	public void setTiempoSistema(String tiempoSistema) {
		this.tiempoSistema = tiempoSistema;
	}

	/**
	 * @return the fechaSistema
	 */
	public String getFechaSistema() {
		return fechaSistema;
	}

	/**
	 * @param fechaSistema
	 *            the fechaSistema to set
	 */
	public void setFechaSistema(String fechaSistema) {
		this.fechaSistema = fechaSistema;
	}

	/**
	 * @return the cantinadBasura
	 */
	public int getCantinadBasura() {
		return cantinadBasura;
	}

	/**
	 * @param cantinadBasura
	 *            the cantinadBasura to set
	 */
	public void setCantinadBasura(int cantinadBasura) {
		this.cantinadBasura = cantinadBasura;
	}

	/**
	 * @return the cantinadPulpa
	 */
	public int getCantinadPulpa() {
		return cantinadPulpa;
	}

	/**
	 * @param cantinadPulpa
	 *            the cantinadPulpa to set
	 */
	public void setCantinadPulpa(int cantinadPulpa) {
		this.cantinadPulpa = cantinadPulpa;
	}

	/**
	 * @return the cantinadPepa
	 */
	public int getCantinadPepa() {
		return cantinadPepa;
	}

	/**
	 * @param cantinadPepa
	 *            the cantinadPepa to set
	 */
	public void setCantinadPepa(int cantinadPepa) {
		this.cantinadPepa = cantinadPepa;
	}

	/**
	 * @return the cantinadMala
	 */
	public int getCantinadMala() {
		return cantinadMala;
	}

	/**
	 * @param cantinadMala
	 *            the cantinadMala to set
	 */
	public void setCantinadMala(int cantinadMala) {
		this.cantinadMala = cantinadMala;
	}

	/**
	 * @return the cantinadBna
	 */
	public int getCantinadBna() {
		return cantinadBna;
	}

	/**
	 * @param cantinadBna
	 *            the cantinadBna to set
	 */
	public void setCantinadBna(int cantinadBna) {
		this.cantinadBna = cantinadBna;
	}

	/* OnCreate */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_ctrl_manejo_fruver);

		getWindow().setSoftInputMode(
				WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

		tvMpInspecionada = (TextView) findViewById(R.id.tvMpInspecionada);
		tvVacio = (TextView) findViewById(R.id.tvVacio);
		etCantBuena = (EditText) findViewById(R.id.etCantBuena);
		etCantMala = (EditText) findViewById(R.id.etCantMala);
		etCantPepa = (EditText) findViewById(R.id.etCantPepa);
		etCantPulpa = (EditText) findViewById(R.id.etCantPulpa);
		etCantBasura = (EditText) findViewById(R.id.etCantBasura);
		lvMpInspec = (ListView) findViewById(R.id.lvMpInspec);

		manejadorMensajes = new handlerAlertMessage();
		activity = this;

	}

	@Override
	protected void onStart() {
		super.onStart();
		handlerDb db = new handlerDb(this);
		db.abrir();
		if (db.leerTabla4("actividad").equals("new")) {
			this.setTitle(this
					.getString(R.string.title_activity_ctrl_manejo_fruver)
					+ ". ("
					+ this.getString(R.string.msjDatosProcesoNumLote)
					+ ": "
					+ db.leer("nombre_lote")
					+ ", "
					+ this.getString(R.string.msjDatosProcesoProducto)
					+ ": "
					+ db.leer("nombre_producto") + ")");

		} else {
			this.setTitle(this
					.getString(R.string.title_activity_ctrl_manejo_fruver)
					+ ". ("
					+ this.getString(R.string.msjDatosProcesoNumLote)
					+ ": "
					+ db.leerTabla2("nombre_lote")
					+ ", "
					+ this.getString(R.string.msjDatosProcesoProducto)
					+ ": "
					+ db.leerTabla2("nombre_producto") + ")");
		}
		db.cerrar();
		GetIpAddress direccion = new GetIpAddress(this);

		if (direccion.getDireccion() != null) {

			URL_IMP = direccion.getDireccion() + "/registro_imp_lote.json";
			URL_REGISTRO_CTRL_FRUVER = direccion.getDireccion()
					+ "/controles_manejo_fruver.json";
			URL_REGISTRO_CTRL_FRUVER_FORCE = direccion.getDireccion()
					+ "/envio_manejo_fruver.json";
			final ProgressDialog pd = ProgressDialog.show(this, null,
					this.getString(R.string.PbMsjCargando), true, true);

			new Thread(new Runnable() {
				@Override
				public void run() {
					self.cargarIMP(URL_IMP);
					Log.e("CtrlManejoFruver", "termina de cargar IMP");

					pd.dismiss();
				}
			}).start();
		} else {
			new AlertDialog.Builder(this)
					.setIcon(android.R.drawable.ic_dialog_alert)
					.setTitle(R.string.tituloAlerta)
					.setMessage(R.string.msjErSinDireccion)
					.setPositiveButton(R.string.btnAceptar,
							new DialogInterface.OnClickListener() {// un
								// listener que al pulsar, cierre la
								// aplicacion
								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									// Salir
									Intent intent = new Intent();
									intent.setClass(activity, Etapas.class);
									startActivity(intent);
								}
							}).show();
		}
	}

	/* onStart */
	@Override
	protected void onResume() {
		super.onResume();

		Bundle bundle = new Bundle();
		bundle = getIntent().getExtras();

		if (bundle != null) {
			this.setTipo(Integer.parseInt(bundle.getString("processType")));
		}
	}

	/* onCreateOptionsMenu */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.layout_ctrl_manejo_fruver, menu);
		return true;
	}

	/* onOptionsItemSelected */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle item selection
		switch (item.getItemId()) {
		case R.id.irInspeccionMp:
			Intent intent = new Intent();
			intent.setClass(activity, InspaccionMp.class);
			Bundle b = new Bundle();
			b.putString("this", "CtrlManejoFruver");
			intent.putExtra("llave", b);
			startActivity(intent);
		}
		return super.onOptionsItemSelected(item);
	}

	/* btn fecha usuario */
	@SuppressWarnings("deprecation")
	public void FechaFinCtrlMf(View v) {
		final Calendar c = Calendar.getInstance();
		fAno = c.get(Calendar.YEAR);
		fMes = c.get(Calendar.MONTH);
		fDia = c.get(Calendar.DAY_OF_MONTH);
		showDialog(DATE_DIALOG_ID);
	}

	/* btn hora usuario */
	@SuppressWarnings("deprecation")
	public void HoraFinCtrlMf(View v) {
		final Calendar c = Calendar.getInstance();
		hHora = c.get(Calendar.HOUR_OF_DAY);
		hMinuto = c.get(Calendar.MINUTE);
		showDialog(TIME_DIALOG_ID);

	}

	private TimePickerDialog.OnTimeSetListener showtime = new TimePickerDialog.OnTimeSetListener() {

		@Override
		public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
			hHora = hourOfDay;
			hMinuto = minute;

			Context context = getApplicationContext();
			CharSequence text = new StringBuilder().append(hHora).append(":")
					.append(hMinuto);
			int duration = Toast.LENGTH_SHORT;

			Toast toast = Toast.makeText(context, text, duration);
			toast.show();
			time = (hHora + ":" + hMinuto).toString();
			self.setTiempoUsuario(time);

		}
	};

	private DatePickerDialog.OnDateSetListener showdate = new DatePickerDialog.OnDateSetListener() {

		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			fAno = year;
			fMes = monthOfYear + 1;
			fDia = dayOfMonth;

			Context context = getApplicationContext();
			CharSequence text = new StringBuilder().append(fDia).append("-")
					.append(fMes).append("-").append(fAno);
			int duration = Toast.LENGTH_SHORT;

			Toast toast = Toast.makeText(context, text, duration);
			toast.show();
			date = (fDia + "-" + fMes + "-" + fAno + "-").toString();
			self.setFechaUsuario(date);

		}
	};

	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case TIME_DIALOG_ID:
			return new TimePickerDialog(this, showtime, hHora, hMinuto, true);

		case DATE_DIALOG_ID:
			return new DatePickerDialog(this, showdate, fAno, fMes, fDia);
		}
		return null;
	}

	/* método que captura la fecha y la hora del sistema */
	@SuppressLint("SimpleDateFormat")
	public void fechaHoraSistema() {
		final Calendar c = Calendar.getInstance();
		int ano = c.get(Calendar.YEAR);
		int mes = c.get(Calendar.MONTH) + 1;
		int dia = c.get(Calendar.DAY_OF_MONTH);
		int hora = c.get(Calendar.HOUR_OF_DAY);
		int minuto = c.get(Calendar.MINUTE);
		String date = (dia + "-" + mes + "-" + ano + "-").toString();
		String time = (hora + ":" + minuto).toString();

		this.setFechaSistema(date);
		this.setTiempoSistema(time);

	}

	/* Metodo que lo lleva a la vista de trazabilidad */
	public void goTrazabilidad(View view) {
		if (this.Lista_MpInspec.isEmpty()) {
			Intent intent = new Intent();
			intent.setClass(this, Trazabilidad.class);
			intent.putExtra("numLote", numeroLote);
			startActivity(intent);

		} else {
			// en la lista de materia prima todavia hay materia
			// sin controlar, es necesario hacerse control
			// manjeo fruver a todas las materias primas
			// inspeccionadas
			manejadorMensajes.alertMessageOneButton(activity,
					R.string.tituloAlerta, R.string.msjERIMPsinControlar,
					R.string.btnAceptar);

		}

	}

	/* btn registrar control manejo fruver */
	public void RegCtrlMf(View v) {
		this.validar();

	}

	/* metodo de validacion de campos y variables */
	public void validar() {
		this.fechaHoraSistema();
		if (this.getFechaSistema() != null && this.getTiempoSistema() != null) {
			if (this.getFechaUsuario() != null) {
				if (this.getTiempoUsuario() != null) {
					if (this.getNombreMpInspect() != null) {

						if (!etCantBuena.getText().toString()
								.equals(STRING_EMPTY))

							this.setCantinadBna(Integer.parseInt(etCantBuena
									.getText().toString()));

						if (!etCantMala.getText().toString()
								.equals(STRING_EMPTY))
							this.setCantinadMala(Integer.parseInt(etCantMala
									.getText().toString()));

						if (!etCantPepa.getText().toString()
								.equals(STRING_EMPTY))
							this.setCantinadPepa(Integer.parseInt(etCantPepa
									.getText().toString()));

						if (!etCantPulpa.getText().toString()
								.equals(STRING_EMPTY))
							this.setCantinadPulpa(Integer.parseInt(etCantPulpa
									.getText().toString()));
						if (!etCantBasura.getText().toString()
								.equals(STRING_EMPTY))
							this.setCantinadBasura(Integer
									.parseInt(etCantBasura.getText().toString()));

						int result = this.getCantinadBna()
								+ this.getCantinadMala();
						if (result == this.cantMPInspec) {
							progressDialog = new ProgressDialog(self);
							progressDialog.setMessage(self
									.getString(R.string.PbMsjRegistrando));
							progressDialog.setCancelable(true);
							progressDialog.show();
							new Thread(new Runnable() {
								@Override
								public void run() {
									self.enviarDatos();
								}
							}).start();

						} else {

							// falta seleccionar mpInspect
							manejadorMensajes.alertMessageOneButton(activity,
									R.string.tituloAlerta,
									R.string.msjERCantMalaCantBnaNoIgual,
									R.string.btnAceptar);
						}

					} else {

						// falta seleccionar mpInspect
						manejadorMensajes.alertMessageOneButton(activity,
								R.string.tituloAlerta,
								R.string.msjERSeleccionMpInspec,
								R.string.btnAceptar);
					}

				} else {
					// falta la hora
					manejadorMensajes.alertMessageOneButton(activity,
							R.string.tituloAlerta, R.string.msjSelecHora,
							R.string.btnAceptar);
				}
			} else {
				// falta la fecha
				manejadorMensajes.alertMessageOneButton(activity,
						R.string.tituloAlerta, R.string.msjSelecFecha,
						R.string.btnAceptar);
			}
		}
	}

	/* Metodo que carga la materia prima inspeccionada en el listado */
	public void cargarIMP(String urlImp) {
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost post = new HttpPost(urlImp);
		Lista_MpInspec = new ArrayList<MpInspeccionada>();
		handlerDb db = new handlerDb(this);
		db.abrir();
		String procesoNew = db.leer("id_proceso");
		String procesoOld = db.leerTabla2("id_proceso");

		try {
			JSONObject dato = new JSONObject();
			if (db.leerTabla4("actividad").equals("new")) {
				dato.put("proceso_id", procesoNew);
				numeroLote = procesoNew;

			} else {

				dato.put("proceso_id", procesoOld);
				numeroLote = procesoOld;
			}

			StringEntity entity = new StringEntity(dato.toString());
			post.setHeader("Content-Type", "application/json; chartset=UTF-8");
			post.setEntity(entity);
			HttpResponse resp = httpClient.execute(post);
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					resp.getEntity().getContent(), "UTF-8"));
			String json = reader.readLine();
			JSONTokener tokener = new JSONTokener(json);
			JSONArray finalResult = new JSONArray(tokener);
			jsonArray = finalResult;
			Log.w("CtrlManejoFruver", finalResult.toString());

			JSONObject objet = new JSONObject();
			try {

				for (int i = 0; i <= jsonArray.length() - 1; i++) {
					objet = jsonArray.getJSONObject(i);
					String idIMP = objet.getString("id");
					String nombreIMP = objet.getString("nombre_materia");
					String cantidadIMP = objet.getString("cantidad_mp");
					Lista_MpInspec.add(new MpInspeccionada(nombreIMP,
							cantidadIMP, idIMP));

				}

			} catch (final Exception e) {
				Log.e("CtrlManejoFruver", "no carga la mP");
				/*
				 * hilo que muestra el mensaje de error de conexion al cargar
				 * los datos
				 */
				runOnUiThread(new Runnable() {
					public void run() {

						AlertDialog.Builder mensajeEmergente = new AlertDialog.Builder(
								activity);
						mensajeEmergente.setTitle(R.string.tituloError);
						mensajeEmergente.setMessage(self
								.getString(R.string.msjERcargarIMP)
								+ " \n \n"
								+ self.getString(R.string.msjInternalError)
								+ ": " + e.getLocalizedMessage());
						mensajeEmergente.setNeutralButton(R.string.btnAceptar,
								new DialogInterface.OnClickListener() {

									public void onClick(DialogInterface dialog,
											int which) {
										CtrlManejoFruver.this.finish();

									}
								});

						mensajeEmergente.create();
						mensajeEmergente.show();
					}
				});
			}

		} catch (final Exception e) {
			// falta exception

			Log.e("CtrlManejoFruver",
					"no carga la mP El error es: " + e.getMessage());
			/*
			 * hilo que muestra el mensaje de error de conexion al cargar los
			 * datos
			 */
			runOnUiThread(new Runnable() {
				public void run() {

					AlertDialog.Builder mensajeEmergente = new AlertDialog.Builder(
							activity);
					mensajeEmergente.setTitle(R.string.tituloError);
					mensajeEmergente.setMessage(self
							.getString(R.string.msjERcargarIMP)
							+ " \n \n"
							+ self.getString(R.string.msjInternalError)
							+ ": "
							+ e.getLocalizedMessage());
					mensajeEmergente.setNeutralButton(R.string.btnAceptar,
							new DialogInterface.OnClickListener() {

								public void onClick(DialogInterface dialog,
										int which) {
									CtrlManejoFruver.this.finish();

								}
							});

					mensajeEmergente.create();
					mensajeEmergente.show();
				}
			});

		}

		db.cerrar();

		// correr en un nuevo hilo la UI
		runOnUiThread(new Runnable() {
			@Override
			public void run() {
				if (self.Lista_MpInspec.isEmpty()) {
					tvVacio.setText(R.string.msjSinMpInspec);
					sinControlar = 1;// evalua que se haya controlado la IMP
					Log.w("CtrlManejoFruver",
							"no hay materia prima inspeccionada");
				} else {

					for (int i = 0; i < Lista_MpInspec.size(); i++) {
						Log.i("CtrlManejoFruver", Lista_MpInspec.get(i)
								.getNameMpinspected().toString()
								+ " "
								+ Lista_MpInspec.get(i).getFullWeight()
										.toString());
					}
					self.adaptador = new AdaptadorMpInspeccionada(self,
							self.Lista_MpInspec);
					lvMpInspec.setAdapter(adaptador);
					lvMpInspec.setDividerHeight(1);

					Log.i("CtrlManejoFruver",
							"listó la materia prima inspeccionada");
				}
			}
		});

		// Se le aplica un Listener donde ira lo que tiene que hacer en caso de
		// que sea pulsado
		lvMpInspec.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long arg3) {

				self.tvMpInspecionada.setText(Lista_MpInspec.get(position)
						.getNameMpinspected());
				self.setNombreMpInspect(Lista_MpInspec.get(position)
						.getNameMpinspected());
				self.setIdMpInspect(Integer.parseInt(Lista_MpInspec.get(
						position).getIdIMP()));
				self.cantMPInspec = Integer.parseInt(self.Lista_MpInspec.get(
						position).getFullWeight());
				itemPosition = position;

				/*
				 * Se notifica al adaptador de que el ArrayList que tiene
				 * asociado ha sufrido cambios (forzando asi a ir al metodo
				 * getView())
				 */

				adaptador.notifyDataSetChanged();

			}
		});

	}

	/*
	 * Metodo que elimina un item de toda la lista de materia prima
	 * inspeccionada
	 */
	public void removerItemLista(int positionItem) {
		MpInspeccionada item = adaptador.getItem(positionItem);
		adaptador.remove(item);
		adaptador.notifyDataSetChanged();
		if (self.Lista_MpInspec.isEmpty()) {
			tvVacio.setText(R.string.msjSinMpInspec);
			sinControlar = 1;// evalua que se haya controlado la IMP
			Log.w("CtrlManejoFruver",
					" Se removió la materia prima inspeccionada");
		}
	}

	public void enviarDatosTolera() {
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost post = new HttpPost(URL_REGISTRO_CTRL_FRUVER_FORCE);
		handlerDb handlerdb = new handlerDb(this);
		handlerdb.abrir();
		String idProcesoNew = handlerdb.leer("id_proceso");
		String idProcesoOld = handlerdb.leerTabla2("id_proceso");

		try {
			// Construimos el objeto cliente en formato JSON
			JSONObject dato = new JSONObject();
			if (handlerdb.leerTabla4("actividad").equals("new")) {
				dato.put("proceso_id", Integer.parseInt(idProcesoNew));
			} else {
				dato.put("proceso_id", Integer.parseInt(idProcesoOld));
			}

			dato.put("fecha_usuario", this.getFechaUsuario());
			dato.put("fecha_sistema", this.getFechaSistema());
			dato.put("hora_usuario", this.getTiempoUsuario());
			dato.put("hora_sistema", this.getTiempoSistema());
			dato.put("cantidad_buena", this.getCantinadBna());
			dato.put("cantidad_mala", this.getCantinadMala());
			dato.put("pulpa", this.getCantinadPulpa());
			dato.put("pepa", this.getCantinadPepa());
			dato.put("basura", this.getCantinadBasura());
			dato.put("registro_imp_id", this.getIdMpInspect());
			StringEntity entity1 = new StringEntity(dato.toString());
			post.setHeader("Content-Type", "application/json; chartset=UTF-8");

			post.setEntity(entity1);
			HttpResponse resp1 = httpClient.execute(post);
			final String respStr = EntityUtils.toString(resp1.getEntity());
			if (respStr.equals("true")) {
				Log.e("CtrlManejoFruver",
						"el servidor me retorna true de almacenamiento exitoso");

				this.setFechaUsuario(null);
				this.setTiempoUsuario(null);
				this.setFechaSistema(null);
				this.setTiempoUsuario(null);
				this.setNombreMpInspect(null);
				this.setCantinadBasura(0);
				this.setCantinadBna(0);
				this.setCantinadMala(0);
				this.setCantinadPepa(0);
				this.setCantinadPulpa(0);

				runOnUiThread(new Runnable() {
					public void run() {

						self.removerItemLista(itemPosition);
						sinControlar = 1;// evalua que se haya controlado la IMP
						self.etCantBasura.setText(null);
						self.etCantPepa.setText(null);
						self.etCantPulpa.setText(null);
						self.etCantBuena.setText(null);
						self.etCantMala.setText(null);
						self.tvMpInspecionada
								.setText(R.string.tvMPInspaccionada);

						progressDialog.dismiss();
						manejadorMensajes.alertMessageOneButton(activity,
								R.string.msjMuyBien,
								R.string.msjRegistroExitoso,
								R.string.btnAceptar);
					}
				});

			} else {
				Log.e("CtrlManejoFruver", "no entra al if");
				runOnUiThread(new Runnable() {
					public void run() {
						progressDialog.dismiss();
						manejadorMensajes.alertMessageOneButton(activity,
								R.string.tituloAlerta,
								R.string.msjErNoRetornaTrue,
								R.string.btnAceptar);

					}
				});
			}

		} catch (Exception e) {
			runOnUiThread(new Runnable() {
				public void run() {
					progressDialog.dismiss();
					manejadorMensajes.alertMessageOneButton(activity,
							R.string.tituloError, R.string.msjERConexionEnviar,
							R.string.btnAceptar);

				}
			});
		}
		handlerdb.close();
	}

	/* Metodo que envia los datos de control manejo fruver al servidor */
	public void enviarDatos() {
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost post = new HttpPost(URL_REGISTRO_CTRL_FRUVER);
		handlerDb handlerdb = new handlerDb(this);
		handlerdb.abrir();
		String idProcesoNew = handlerdb.leer("id_proceso");
		String idProcesoOld = handlerdb.leerTabla2("id_proceso");

		try {
			// Construimos el objeto cliente en formato JSON
			JSONObject dato = new JSONObject();
			if (handlerdb.leerTabla4("actividad").equals("new")) {
				dato.put("proceso_id", Integer.parseInt(idProcesoNew));
			} else {
				dato.put("proceso_id", Integer.parseInt(idProcesoOld));
			}

			dato.put("fecha_usuario", this.getFechaUsuario());
			dato.put("fecha_sistema", this.getFechaSistema());
			dato.put("hora_usuario", this.getTiempoUsuario());
			dato.put("hora_sistema", this.getTiempoSistema());
			dato.put("cantidad_buena", this.getCantinadBna());
			dato.put("cantidad_mala", this.getCantinadMala());
			dato.put("pulpa", this.getCantinadPulpa());
			dato.put("pepa", this.getCantinadPepa());
			dato.put("basura", this.getCantinadBasura());
			dato.put("registro_imp_id", this.getIdMpInspect());
			StringEntity entity1 = new StringEntity(dato.toString());
			post.setHeader("Content-Type", "application/json; chartset=UTF-8");

			post.setEntity(entity1);
			HttpResponse resp1 = httpClient.execute(post);
			final String respStr = EntityUtils.toString(resp1.getEntity());

			if (respStr.equals("true")) {
				Log.e("CtrlManejoFruver",
						"el servidor me retorna true de almacenamiento exitoso");

				this.setFechaUsuario(null);
				this.setTiempoUsuario(null);
				this.setFechaSistema(null);
				this.setTiempoUsuario(null);
				this.setNombreMpInspect(null);
				this.setCantinadBasura(0);
				this.setCantinadBna(0);
				this.setCantinadMala(0);
				this.setCantinadPepa(0);
				this.setCantinadPulpa(0);

				runOnUiThread(new Runnable() {
					public void run() {

						self.removerItemLista(itemPosition);
						sinControlar = 1;// evalua que se haya controlado la IMP
						self.etCantBasura.setText(null);
						self.etCantPepa.setText(null);
						self.etCantPulpa.setText(null);
						self.etCantBuena.setText(null);
						self.etCantMala.setText(null);
						self.tvMpInspecionada
								.setText(R.string.tvMPInspaccionada);

						progressDialog.dismiss();
						manejadorMensajes.alertMessageOneButton(activity,
								R.string.msjMuyBien,
								R.string.msjRegistroExitoso,
								R.string.btnAceptar);
					}
				});

			} else {

				if (respStr.equals("false fr")) {
					runOnUiThread(new Runnable() {
						public void run() {

							progressDialog.dismiss();
							AlertDialog.Builder mensajeEmergente = new AlertDialog.Builder(
									activity);
							mensajeEmergente
									.setIcon(android.R.drawable.ic_dialog_alert);
							mensajeEmergente.setTitle(R.string.tituloAlerta);
							mensajeEmergente.setMessage(R.string.msjERFalseFr);
							mensajeEmergente.setPositiveButton(
									R.string.btnContinuar,
									new DialogInterface.OnClickListener() {

										public void onClick(
												DialogInterface dialog,
												int which) {
											progressDialog = new ProgressDialog(
													self);
											progressDialog.setMessage(self
													.getString(R.string.PbMsjRegistrando));
											progressDialog.setCancelable(true);
											progressDialog.show();
											new Thread(new Runnable() {
												@Override
												public void run() {
													self.enviarDatosTolera();
												}
											}).start();

										}
									});

							mensajeEmergente.setNegativeButton(
									R.string.btnCancelar, null);

							mensajeEmergente.create();
							mensajeEmergente.show();
						}
					});
				} else {
					Log.e("CtrlManejoFruver", "no entro a false fr");
					runOnUiThread(new Runnable() {
						public void run() {
							progressDialog.dismiss();
							manejadorMensajes.alertMessageOneButton(activity,
									R.string.tituloAlerta,
									R.string.msjErNoRetornaTrue,
									R.string.btnAceptar);

						}
					});
				}
			}

		} catch (Exception e) {
			runOnUiThread(new Runnable() {
				public void run() {
					progressDialog.dismiss();
					manejadorMensajes.alertMessageOneButton(activity,
							R.string.tituloError, R.string.msjERConexionEnviar,
							R.string.btnAceptar);

				}
			});
		}
		handlerdb.close();
	}

	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {

		if (keyCode == KeyEvent.KEYCODE_BACK) {

			// Salir
			Intent intent = new Intent();
			intent.setClass(activity, TipoProceso.class);
			startActivity(intent);
			return true;

		}
		// para las demas cosas, se reenvia el evento al listener habitual
		return super.onKeyUp(keyCode, event);
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);

		outState.putString("fecha", date);
		outState.putString("hora", time);
		outState.putString("nombreIMP", this.getNombreMpInspect());
		outState.putInt("idImp", this.getIdMpInspect());

	}

	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		super.onRestoreInstanceState(savedInstanceState);

		this.setFechaUsuario(savedInstanceState.getString("fecha"));
		this.setTiempoUsuario(savedInstanceState.getString("hora"));
		this.setNombreMpInspect(savedInstanceState.getString("nombreIMP"));
		this.setIdMpInspect(savedInstanceState.getInt("idIMP"));
		this.tvMpInspecionada.setText(this.getNombreMpInspect());

	}

}
